package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
)

type defaultAppTable struct {
	Apps defaultAppInfos `json:"DefaultApps"`
}

type defaultAppInfo struct {
	AppId   string   `json:"AppId"`
	AppType string   `json:"AppType"`
	Types   []string `json:"SupportedType"`
}
type defaultAppInfos []*defaultAppInfo

func unmarshal(file string) (*defaultAppTable, error) {
	content, err := ioutil.ReadFile(file)
	if err != nil {
		return nil, err
	}

	var table defaultAppTable
	err = json.Unmarshal(content, &table)
	if err != nil {
		return nil, err
	}

	return &table, nil
}

func genMimeAppsInfo(file, dest string) error {
	table, err := unmarshal(file)
	if err != nil {
		return err
	}

	var content string
	content += fmt.Sprintln("[Default Applications]")
	for _, info := range table.Apps {
		for _, ty := range info.Types {
			content += fmt.Sprintf("%s=%s\n", ty, info.AppId)
		}
	}
	return ioutil.WriteFile(dest, []byte(content), 0644)
}
